#include <iostream>

// 使用模板类 vector
#include <vector>

// 使用模板类 array
#include <array>

int main()
{
    // 使用vector模板类创建一个数组
    using namespace std;
    // 创建了一个vector类对象,长度是0的数组
    vector<int> vi;

    // 创建了一个存储double类型的类,其中长度为10,vector的大小可以是变量,vector存储在堆/自由存储区中
    vector<double> vd(10);
    // 初始化
    vd[0] = 100;
    vd[1] = 100;
    vd[2] = 100;
    vd[3] = 100;
    vd[4] = 100;
    vd[5] = 100;

    int arr_length;
    cin >> arr_length;
    vector<double> vd2(arr_length);

    // 使用array模板类创建,n_elem不能是变量,
    // array<typename, n_elem> array_name;
    array<int, 5> ai;
    array<double, 4> ad = {12.3, 1234., 32, 1234};
    ad[0] = 100;
    ad[1] = 100;
    ad[2] = 100;
    ad[3] = 100;

    // C++同样也不会检查数组下标
    // ad[4] = 100;     // 有可能出错
    //可以使用at()方法进行审查,将会在运行期间捕获非法索引,程序默认将会中断,代价是运行的时间更长
    ad.at(4) = 2.4;
    //报错内容
    // terminate called after throwing an instance of 'std::out_of_range'
    // what() : array::at : __n(which is 4) >= _Nm(which is 4)


    return 0;
}